#ifndef SCATTERCHART_H
#define SCATTERCHART_H

#include "../BasicXYchart/BasicXYchart.h"
#include "../../gui/BasicXYchartGUI/BasicXYchartGUI.h"
#include "../adapters/qwt/BasicXYchart/QwtBasicXYchart.h"
#include "../../gui/PlotWindow/PlotWindow.h"
namespace LightChart
{
/**
        @class ScatterChart
        @author Maciej Siczek, Przemyslaw Plutecki
        @version 1.0
        @brief Complete scatter chart definition class.


        This complete, Qt-oriented, line chart class stores all the chart's settings in base class - BasicXYchart, and provides
        graphical user interface that allows to change these settings. It uses adapter to Qwt library, producing QwtPlot placed in PlotWindow.
        @see BasicXYchart, LineChartGUI, qwtLineChart, PlotWindow
    */

class ScatterChart : public BasicXYchart, public BasicXYchartGUI
{
public:
    ScatterChart(QWidget* parent); ///< @brief constructor @param parent parent Widget
    void showOptions(); ///< @brief Displays GUI with chart's settings
    void draw(); ///< Displays QwtPlot produced by qwtLineChart adapter, placed in PlotWindow.
private:
    friend class boost::serialization::access;
    template<class Archive> void serialize(Archive & ar, const unsigned int version);
};
template<class Archive> inline void ScatterChart::serialize(Archive & ar, const unsigned int) {
    ar & boost::serialization::base_object<BasicXYchart>(*this);
}
}
namespace boost {
namespace serialization {
template<class Archive>
inline void load_construct_data(Archive &, LightChart::ScatterChart * t, const unsigned int) {
    ::new(t)LightChart::ScatterChart(0); // shouldnt leak :o
}
}
}
#if BOOST_VERSION > 104200
#else
BOOST_CLASS_EXPORT(LightChart::ScatterChart)
#endif
#endif // SCATTERCHART_H
